home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / misc / AWNP_2-39.lha / AWNP / AWNP-Docs / Tutorials / tutorial3.rx < prev    next >
Text File  |  1999-11-15  |  5KB  |  222 lines

  1. /*Tutorial 3 for AWNPipe*/
  2.  
  3. call setdefaults()
  4. call buildgui()
  5.  
  6. topipe('id 'savegad' dis 1 ref')
  7.  
  8. /*main loop*/
  9. do while ~eof(ca)
  10. call topipe('continue')
  11. in= readln(ca)
  12. parse var in in1 in2 in3 in4 .
  13. if in1='gadget' then call gadget()
  14. if in1='menu' then call menu()
  15. if in1='close' then call windowclosed()
  16. end
  17. /*end of main loop*/
  18.  
  19. exit
  20.  
  21. gadget:
  22. if in2=agegad then age=in3  Close
  23. if in2=sexgad then sex=in3
  24. if in2=knogad then knowledge=in3
  25. if in2=basgad then basic=in3
  26. if in2=aregad then arexx=in3
  27. if in2=cgad then c=in3
  28. if in2=asmgad then asm=in3
  29. /* the return from a string gadget is parsed differently since it can be more
  30. then 1 word. */
  31. if in2=namegad then do
  32. parse var in . . in3
  33. /*strip it since arexx parsing adds the leading space to the last string
  34. assignment*/
  35. name=strip(in3)
  36. if name='' then call topipe('id 'savegad' dis 1 ref')
  37. else call topipe('id 'savegad' dis 0 ref')
  38. end
  39.  
  40. if in2=dongad then do
  41. call printdata()
  42. exit
  43. end
  44.  
  45. if in2=resgad then call resetform()
  46. if in2=savegad then call saveform()
  47. if in2=loadgad then call loadform()
  48.  
  49. if in2=cangad then do
  50. say 'user canceled'
  51. exit
  52. end
  53.  
  54. return
  55.  
  56. windowclosed:
  57. say 'User aborted with CTRL BackSlash or closed window.'
  58. exit
  59. return
  60.  
  61. menu:
  62. /* menu 0 is just informational so can be ignored */
  63.  
  64. if in2=1 then do
  65. if in3=0 then call printdata()
  66. if in3=1 then do
  67. if in4=0 then say 'name' name 'age' age 'sex' sex
  68. if in4=1 then say 'knowledge' knowledge 'basic' basic 'arexx' arexx 'c' c 'asm' asm
  69. end
  70. end
  71. return
  72.  
  73.  
  74. setdefaults:
  75. name='unset'
  76. age=30
  77. sex=0
  78. knowledge=0
  79. basic=0
  80. c=0
  81. asm=0
  82. arexx=0
  83. return
  84.  
  85. buildgui:
  86. /* Open pipe 'tut2' with GUI creation option '/xc' */
  87. call open(ca,"awnpipe:tut3/xc")
  88.  
  89. /* define the window */
  90.  
  91. /* The first line oF every GUI is the window definition. The window is titled
  92. "Tutorial 2" and its elements will be laid out verticaly (v). It has a
  93. closegadget (cg) , depthgadget (dg) , and dragbar (db). It will have spaces
  94. inbetween its gadgets (si). It will open on the topleft (tl) of the screen
  95. becoming active (a) when opened. */
  96.  
  97. call topipe(' "Tutorial 3" v cg dg db si a tl m')
  98.  
  99. /* define the gadgets*/
  100.  
  101. call topipe(' layout b 0 v')
  102.  
  103. /* Labels are used to tell the user what information to enter in each gadget.
  104. These labels are unatached (ua) when they are defined so don't go directly
  105. into the GUI. Instead they are attached to the following gadget by the
  106. childlabel (chl) keyword. */
  107.  
  108. call topipe(' label  gt "Name: " ua')
  109. namegad=topipe('string lj chl')
  110.  
  111. call topipe(' label gt "Age: " ua')
  112. agegad=topipe('integer chl minn 5 maxn 115 arrows defn 30  weiw 0')
  113.  
  114. call topipe(' label gt "Sex: " ua')
  115. sexgad=topipe('radiobutton rl "Male|Female" chl')
  116.  
  117. call topipe(' label gt "Knowledge: " ua')
  118. knogad=topipe('chooser pu cl "Novice|Average|Good|Expert" chl')
  119.  
  120. call topipe(' label gt "Language(s): " ua')
  121.  
  122. call topipe(' layout b 0 chl')
  123. basgad=topipe('checkbox gt "Basic " chl')
  124. aregad=topipe('checkbox gt "Arexx " chl')
  125. cgad=topipe('checkbox gt "C " chl')
  126. asmgad=topipe('checkbox gt "ASM " chl')
  127. call topipe(' le')
  128.  
  129. call topipe(' le')
  130.  
  131. call topipe(' layout si so')
  132. savegad= topipe('button gt "Save" ')
  133. loadgad= topipe('button gt "Load" ')
  134. resgad= topipe('button gt "Reset Form" ')
  135. dongad= topipe('button gt "Done" c')
  136. cangad= topipe('button gt "Cancel" c')
  137. call topipe(' le')
  138.  
  139.  
  140. call topipe(' menu gt "Project  |About|$!   Tutorial 2   |$!  AWNPipe: Example"')
  141. call topipe(' menu gt "Data|@AShow all data|Show part|$@PPersonal|$@SSkill"')
  142.  
  143. getfilegad=topipe('getfile gt "Select Information File" fn "t:" ua pat "#?.tut3"')
  144.  
  145. /*open the GUI window*/
  146. call topipe("open")
  147. return
  148.  
  149. printdata:
  150. /*show the value of all the gadgets*/
  151. say '     Name: 'name
  152. say '      Age: 'age
  153. say '      Sex: 'sex
  154. say 'Knowledge: 'knowledge
  155. if basic=1 then say '           Basic'
  156. if arexx=1 then say '           Arexx'
  157. if c=1 then     say '           C'
  158. if asm=1 then   say '           Asm'
  159. return
  160.  
  161. topipe:
  162. /* this routine does error checking on lines written to pipe.*/
  163.  
  164. /*get line to output*/
  165. parse arg out
  166.  
  167. /* write to the pipe*/
  168. call writeln(ca,out)
  169.  
  170. /*get responce and parse it.*/
  171. res=readln(ca)
  172. parse var res res1 res2 .
  173.  
  174. /* if all is ok return the second part of the responce (usualy the GID)*/
  175. if res1='ok' then return(res2)
  176.  
  177. /* something went wrong, we notify the user then exit */
  178. /*show problem line and responce (reponce may be just a blank line)*/
  179. say 'error from: 'out
  180. say '  responce: ' res
  181. exit
  182.  
  183. resetform:
  184. call topipe('id 'agegad' defn 30 ref')
  185. call topipe('id 'sexgad' s 0 ref')
  186. call topipe('id 'knogad' s 0 ref ')
  187. call topipe('id 'basgad' s 0 ref')
  188. call topipe('id 'aregad' s 0 ref')
  189. call topipe('id 'cgad' s 0 ref ')
  190. call topipe('id 'asmgad' s 0 ref')
  191. call topipe('id 'namegad' gt "" ref')
  192. topipe('id 'savegad' dis 1 ref')
  193. call setdefaults()
  194. return
  195.  
  196. saveform:
  197. call open(form,'t:'name'.tut3','W')
  198. call writech(form,age sex knowledge basic arexx c asm name)
  199. call close(form)
  200. return
  201.  
  202. loadform:
  203. call writeln(ca,'id 'getfilegad' fn "t:" s 1')
  204. res=readln(ca);
  205. parse var res res1 '"' filename '"'
  206. if res1~=0 then do
  207. call open(form,filename,'R')
  208. formin=readch(form,1000)
  209. parse var formin age sex knowledge basic arexx c asm name
  210. name=substr(name,2)
  211. call close(form)
  212. call topipe('id 'agegad' defn 'age' ref')
  213. call topipe('id 'sexgad' s 'sex' ref')
  214. call topipe('id 'knogad' s 'knowledge' ref ')
  215. call topipe('id 'basgad' s 'basic' ref')
  216. call topipe('id 'aregad' s 'arexx' ref')
  217. call topipe('id 'cgad' s 'c' ref ')
  218. call topipe('id 'asmgad' s 'asm' ref')
  219. call topipe('id 'namegad' gt "'name'" ref')
  220. end
  221. return
  222.